package oxing.core;

public abstract class Log {
	protected final static String ERROR = "ERROR";
	protected final static String WARN = "WARN";
	protected final static String INFO = "INFO";
	protected final static String DEBUG = "DEBUG";

	public void error(String msg) {
		print(ERROR, msg);
	}

	public void error(boolean msg) {
		print(ERROR, String.valueOf(msg));
	}

	public void error(char msg) {
		print(ERROR, String.valueOf(msg));
	}

	public void error(int msg) {
		print(ERROR, String.valueOf(msg));
	}

	public void error(long msg) {
		print(ERROR, String.valueOf(msg));
	}

	public void error(float msg) {
		print(ERROR, String.valueOf(msg));
	}

	public void error(double msg) {
		print(ERROR, String.valueOf(msg));
	}

	public void error(char[] msg) {
		print(ERROR, String.valueOf(msg));
	}

	public void error(Object msg) {
		print(ERROR, String.valueOf(msg));
	}

	public void error(Throwable msg) {
		print(ERROR, msg.getMessage());
	}

	public void warn(String msg) {
		print(WARN, msg);
	}

	public void warn(boolean msg) {
		print(WARN, String.valueOf(msg));
	}

	public void warn(char msg) {
		print(WARN, String.valueOf(msg));
	}

	public void warn(int msg) {
		print(WARN, String.valueOf(msg));
	}

	public void warn(long msg) {
		print(WARN, String.valueOf(msg));
	}

	public void warn(float msg) {
		print(WARN, String.valueOf(msg));
	}

	public void warn(double msg) {
		print(WARN, String.valueOf(msg));
	}

	public void warn(char[] msg) {
		print(WARN, String.valueOf(msg));
	}

	public void warn(Object msg) {
		print(WARN, String.valueOf(msg));
	}

	public void warn(Throwable msg) {
		print(WARN, msg.getMessage());
	}

	public void print(String tag, String msg) {
		print(String.format("[%5S]:%s\n", tag, msg));
	}

	protected abstract void print(String log);
}
